home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / timevent / taskmstr / vrepair.tsk < prev   
Text File  |  1995-05-07  |  6KB  |  258 lines

  1. // Enable LOG ON for debugging purposes since it will
  2. // show the lines processed and their structure.
  3. // (Remove the leading slashes to enable LOG ON)
  4.  
  5. // LOG ON
  6.  
  7.  
  8. // Change to the System Console screen before processing.
  9.  
  10. CHANGE_SCREEN "System Console"
  11.  
  12.  
  13. // Clear the System Console screen.
  14.  
  15. CLS
  16.  
  17.  
  18. // The following displays the currently mounted
  19. // volumes on the console screen.
  20.  
  21. VOLUMES
  22.  
  23.  
  24. // Capture the current System Console screen image as
  25. // text (default mode).
  26.  
  27. SAVE_SCREEN SYS:SYSTEM\CONSOLE.DAT
  28.  
  29.  
  30. // Open the System Console screen text image for input.
  31.  
  32. OPEN_READ SYS:SYSTEM\CONSOLE.DAT
  33.  
  34.  
  35. // This WHILE/LOOP scans for the string "Mounted Volumes"
  36. // in each line of the captured System Console screen.
  37. // Mounted Volumes is displayed on the line preceding
  38. // the Volume names shown by the VOLUMES console command.
  39. // (Note: The first pass fails since %1 is not defined.)
  40.  
  41. WHILE NOT SCAN_STRING "Mounted Volumes" "%1"
  42.  
  43.  
  44.   // The "Mounted Volumes" string was not found so read the next
  45.   // line from the input file (System Console screen text image).
  46.  
  47.   READ %1
  48.  
  49.  
  50.   // Abort the Task if a read error occurs.
  51.  
  52.   IF ERRORLEVEL
  53.     ECHO Read error occurred!
  54.     ABORT
  55.   ENDIF
  56.  
  57.  
  58.   // If the read returns a null string, exit since the
  59.   // System Console screen should be padded with spaces.
  60.   // (Note: No spaces are allowed between the strings and
  61.   //        the operators in comparisons.)
  62.  
  63.   IF "%1"==""
  64.     ECHO Unable to locate volume information!
  65.     ABORT
  66.   ENDIF
  67.  
  68.  
  69. // Repeat the process until "Mounted Volumes"
  70. // or a null string is found.
  71.  
  72. LOOP
  73.  
  74.  
  75. // Load the VREPAIR NLM.
  76.  
  77. LOAD VREPAIR
  78.  
  79.  
  80. // Abort this Task if VREPAIR cannot be loaded.
  81.  
  82. IF ERRORLEVEL
  83.   ECHO Unable to load VREPAIR!
  84.   ABORT
  85. ENDIF
  86.  
  87.  
  88. // The following WHILE/LOOP tests if the read string is null
  89. // The first pass it will not be since it matched above.
  90. // (Note: No spaces are allowed between the strings and the
  91. //        operators in comparisons.)
  92.  
  93. WHILE "%1">""
  94.  
  95.  
  96.   // Read the next line from the captured System Console screen
  97.  
  98.   READ %1
  99.  
  100.  
  101.   // Abort the Task if a read error occurs.
  102.  
  103.   IF ERRORLEVEL
  104.     ECHO Read error occurred!
  105.     ABORT
  106.   ENDIF
  107.  
  108.  
  109.   // If the string "DOS" is not found on the line, probably
  110.   // is not a volume since DOS Name Space support is typical.
  111.  
  112.   IF NOT SCAN_STRING "DOS" "%1" THEN BREAK
  113.  
  114.  
  115.   // In this example, we do not want to process the SYS: volume.
  116.   // (Note: If repair of the SYS: volume is desired, VRepair
  117.   //        will have to be loaded from the DOS partition,
  118.   //        LOAD C:\NETWARE\VREPAIR.  The captured screen
  119.   //        image will also have to be saved to the DOS
  120.   //        partition, DEFINE %0 C:\CONSOLE.DAT.)
  121.  
  122.   IF SCAN_STRING "SYS" "%1"
  123.     ECHO Not processing SYS: in this test!
  124.     CONTINUE
  125.   ENDIF
  126.  
  127.  
  128.   // Dismount the volume in order to perform VRepair.
  129.  
  130.   DISMOUNT %1
  131.  
  132.  
  133.   // Make sure the VRepair Status Screen is active.
  134.  
  135.   CHANGE_SCREEN "VRepair Status Screen"
  136.  
  137.  
  138.   // Repair the first (only) dismounted volume.
  139.  
  140.   KEYIN "1" ENTER
  141.  
  142.  
  143.   // Pause a second to let it get started
  144.  
  145.   WAIT 1
  146.  
  147.  
  148.   // Use F1 key to change the default options
  149.  
  150.   KEYIN F1
  151.  
  152.  
  153.   // Change to the VRepair Error Screen and set the
  154.   // options not to prompt for keyins.
  155.  
  156.   CHANGE_SCREEN "VRepair Error Screen"
  157.  
  158.  
  159.   // Set the options to: Do Not Pause After Errors
  160.  
  161.   KEYIN "1" ENTER
  162.  
  163.  
  164.   // Continue the VRepair process.
  165.  
  166.   KEYIN "0" ENTER
  167.  
  168.  
  169.   // Pause a second to let it reset the options
  170.  
  171.   WAIT 1
  172.  
  173.  
  174.   // Switch the default screen back to the VRepair
  175.   // Status Screen so we can check for completion.
  176.  
  177.   CHANGE_SCREEN "VRepair Status Screen"
  178.  
  179.  
  180.   // This Task uses the %9 user defined variable to
  181.   // track how long VRepair works.
  182.   // Set %9 to the proper numeric value and compare length.
  183.  
  184.   DEFINE %9 000
  185.  
  186.  
  187.   // Scan the screen for the prompt <Press any key ...>
  188.   // which indicates completion of the VRepair.
  189.  
  190.   WHILE NOT SCAN_SCREEN "<Press any key to continue>"
  191.  
  192.  
  193.     // Pause 1 second before continuing with the loop
  194.  
  195.     WAIT 1
  196.  
  197.  
  198.     // Increment the counter after each 1 second pause.
  199.  
  200.     DEFINE %9 %9+=1
  201.  
  202.  
  203.     // If more than 5 minutes passes (300 seconds),
  204.     // better abort since it should not take that long
  205.     // to repair the volume.
  206.     //  (Note: This may need to be adjusted depending
  207.     //         upon volume size and file count.)
  208.  
  209.     IF %9>300
  210.       ECHO VRepair has run for 5 minutes.
  211.       ECHO Maybe there is a problem?!?!
  212.       ABORT
  213.     ENDIF
  214.  
  215.  
  216.   // Continue processing the next volume shown.
  217.  
  218.   LOOP
  219.  
  220.  
  221.   // Clear the <Press any key ...> prompt
  222.  
  223.   KEYIN " "
  224.  
  225.  
  226.   // Remount the volume just repaired.
  227.  
  228.   MOUNT %1
  229.  
  230.  
  231. // Repeat the process until no more Volumes exist.
  232. // (Note: We assume no more volumes exist if we
  233. //        do not find the string "DOS" on the line,
  234. //        i.e., typical NetWare volumes will have
  235. //        DOS Name Space support which appears
  236. //        beside the volume name.)
  237.  
  238. LOOP
  239.     
  240.  
  241. // Finished with VRepair
  242.  
  243. UNLOAD VREPAIR
  244.  
  245.  
  246. // Delete the temporary file where we wrote the
  247. // captured System Console screen image.
  248.  
  249. DEL SYS:SYSTEM\CONSOLE.DAT
  250.  
  251.  
  252. // Disable LOG ON (if previously enabled).
  253. // (Note: This is not required since TaskMaster will
  254. //        clean up after the Task but it is a sign of
  255. //        proper design and follow through in the logic.)
  256.  
  257. // LOG OFF
  258.